package cc.cix.gt.org.service;


import cc.cix.gt.common.constant.ThreadPoolConstant;
import cc.cix.gt.common.entity.ResultPage;
import cc.cix.gt.org.dto.query.QueryLogReq;
import cc.cix.gt.org.entity.Log;
import com.baomidou.mybatisplus.extension.service.IService;
import org.aspectj.lang.ProceedingJoinPoint;
import org.springframework.scheduling.annotation.Async;

import java.lang.reflect.Method;
import java.util.List;

/**
 * @author cix
 */
public interface ILogService extends IService<Log> {

    /**
     * 查询操作日志分页
     *
     * @param dto 查询对象
     * @return IPage<SystemLog>
     */
    ResultPage<Log> listLog(QueryLogReq dto);

    /**
     * 删除操作日志
     *
     * @param logIds 日志 ID集合
     */
    void deleteLogByIds(List<String> logIds);

    /**
     * 异步保存操作日志
     *
     * @param point     切点
     * @param method    Method
     * @param ip        ip
     * @param operation 操作内容
     * @param username  操作用户
     * @param start     开始时间
     */
    @Async(ThreadPoolConstant.ASYNC_POOL)
    void saveLog(ProceedingJoinPoint point, Method method, String ip, String operation, String username, long start);
}
